04-Health-Check설정
Health Check 설정
Health Check가 중요한 이유
실생활 비유
- 병원의 건강검진 = Health Check
- 정기 검진으로 질병 조기 발견 = 서버 문제 조기 감지
- 아픈 사람은 격리 = 문제 있는 서버는 트래픽 차단
현재 Health Check 상태 확인
Target Group에서 확인
- EC2 콘솔 → 대상 그룹 →
webapp-web-targets클릭 - 대상 탭에서 현재 상태 확인:
- healthy: 정상 동작
- unhealthy: 문제 있음
- initial: 첫 검사 진행 중
Health Check 세부 정보 확인
상태 확인 탭에서:
- 프로토콜: HTTP
- 경로:
/webapp/index.html - 포트: 80
- 간격: 30초
- 정상 임계값: 2회 연속 성공
- 비정상 임계값: 2회 연속 실패
Health Check 최적화
최적화된 설정 (이미 되어있다면 넘어가기)
- 대상 그룹 →
webapp-web-targets선택 - 작업 → 상태 확인 설정 편집 클릭
새로운 설정:
- 상태 확인 경로:
/webapp/(JSP 동적 페이지) - 간격:
15초 (더 빠른 감지) - 정상 임계값:
2(기본값 유지) - 비정상 임계값:
3(좀 더 관대하게) - 시간 제한:
5초 (기본값 유지)
- 변경 사항 저장 클릭
Health Check 테스트
정상 동작 테스트
# Web 서버에 SSH 접속
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP
# Health Check 경로 직접 테스트
curl http://localhost/webapp/
# 200 OK 응답이 와야 정상
장애 시뮬레이션
Apache 중지해서 테스트:
# Web 서버에서 Apache 중지
sudo systemctl stop httpd
# Target Group에서 상태 변화 관찰
# healthy → unhealthy로 변경 (45초 후)
복구 테스트:
# Apache 다시 시작
sudo systemctl start httpd
# 상태 복구 확인
# unhealthy → healthy로 변경 (30초 후)
Health Check 로그 확인
ALB 액세스 로그 (선택사항)
Advanced 설정에서 액세스 로그를 S3에 저장할 수 있음:
ALB → 속성 → 액세스 로그 → 편집
S3 버킷 지정하면 모든 요청 기록 가능
서버 로그에서 Health Check 확인
# Apache 액세스 로그에서 Health Check 요청 확인
sudo tail -f /var/log/httpd/access_log
# 15초마다 다음과 같은 로그가 나타남:
# 10.0.x.x - - [날짜] "GET /webapp/ HTTP/1.1" 200 1234
다양한 Health Check 패턴
1. 간단한 정적 페이지
경로: /health.html
내용: "OK"
장점: 빠름, 간단
단점: 실제 애플리케이션 동작 확인 안 됨
2. 애플리케이션 상태 확인 (현재 사용)
경로: /webapp/
내용: JSP 동적 페이지
장점: 실제 WAS 동작까지 확인
단점: 약간 느림
3. 전용 Health Check API
경로: /health
내용: 데이터베이스 연결 + 서비스 상태 JSON
장점: 가장 정확한 상태 확인
단점: 별도 개발 필요
고급 설정
Sticky Sessions (Session Affinity)
사용자가 항상 같은 서버에 접속하게 하려면:
- 대상 그룹 → 속성 → 편집
- 고착성 → 활성화
- 기간:
1800초 (30분)
Cross-Zone Load Balancing
기본적으로 활성화됨 (가용영역 간 균등 분산)
주의사항
Health Check 과도한 요청
- 15초 간격 × 서버 수 × ALB 노드 수 = 많은 요청
- 서버 로그에 Health Check 요청이 많이 보임
- 정상적인 현상이니 걱정하지 마세요!
임계값 설정
- 너무 엄격: 일시적 문제에도 서버 제외
- 너무 관대: 실제 문제 있는 서버도 사용 계속
완료 체크리스트
운영 팁
모니터링
- CloudWatch에서 Health Check 실패율 모니터링
- 임계값 초과시 알림 설정 (나중에 Week 4에서 다룸)
유지보수
- 서버 업데이트 시 한 대씩 순차적으로 진행
- Health Check 실패한 서버는 자동으로 트래픽 차단됨
Health Check 최적화 완료! 이제 Auto Scaling으로 서버를 자동 확장해봅시다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/01-Auto-Scaling개념
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/02-Application-Load-Balancer/03-ALB생성및연결, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README